#include <string>
#include "jni.h"
#include "string.h"

extern "C" {
JNIEXPORT jstring JNICALL
Java_com_yobert_ndk_NativeMethods_getString__(JNIEnv *env, jobject job) {
    std::string hello = "NDK 来自于C文件-NativeMethods";
    return env->NewStringUTF(hello.c_str());
}

JNIEXPORT jstring
JNICALL Java_com_yobert_ndk_NativeMethods_getStringC__Ljava_lang_String_2
        (JNIEnv *env, jobject job, jstring jstr) {
//    char buf[128];
//    const char *str = (*env)->GetStringUTFChars(env, jstr, 0);
//    return (*env)->ReleaseStringUTFChars(env, jstr, str);

    // jstring 转 char*
//    const char* chardata = jstringToChar(env, jstr);
    // char* 转 string
    // string str = charData;

//    return (*env)->NewStringUTF(env, "NDK 来自于C文件:"+jstringTostring(*env,jstr));
    return jstr;
}

//std::string jstring2str(JNIEnv* env, jstring jstr)
//{
//    char*   rtn   =   NULL;
//    jclass   clsstring   =   env->FindClass("java/lang/String");
//    jstring   strencode   =   env->NewStringUTF("GB2312");
//    jmethodID   mid   =   env->GetMethodID(clsstring,   "getBytes",   "(Ljava/lang/String;)[B");
//    jbyteArray   barr=   (jbyteArray)env->CallObjectMethod(jstr,mid,strencode);
//    jsize   alen   =   env->GetArrayLength(barr);
//    jbyte*   ba   =   env->GetByteArrayElements(barr,JNI_FALSE);
//    if(alen   >   0)
//    {
//        rtn   =   (char*)malloc(alen+1);
//        memcpy(rtn,ba,alen);
//        rtn[alen]=0;
//    }
//    env->ReleaseByteArrayElements(barr,ba,0);
//    std::string stemp(rtn);
//    free(rtn);
//    return   stemp;
//}

}